// 这里面存放vuex的核心代码
import Vue from 'vue'
import Vuex from 'vuex'

// 插件安装
Vue.use(Vuex)

//创建仓库(空仓库)
const store = new Vuex.Store({
    // 严格模式(有利于初学者检测不规范的代码,如单向数据流/因为性能损耗,上线需移除)
    strict: true,
    // 通过 state 提供数据,所有组件共享
    state: {
        title: "大标题",
        count: 100
        
    },
    // 定义mutations对象,对象中存放修改state的方法
    // 组件中调用 this.$store.commit('addCount')
    mutations: {
        // 所有的mutations函数,第一个参数,都是 stage
        addCount (state) {
            state.count += 1
        },
        addFive(stage) {
            stage.count += 5
        },
        changeTittle(state) {
            state.title = "Hello World"
        },
        // 提交 mutation 是可以传递参数的 `this.$store.commit('xxx', 参数)`
        // n 是 提交载荷 payload, n有且只能有一个,如果需要多个参数,可以包装成对象
        addCount2 (state, n) {
            state.count += n
        },
        changeTittle2(stage, newTitle) {
            stage.title = newTitle
        },
        handleSubx(stage, n) {
            stage.count -= n
        },
        changeCount2(stage, n) {
            stage.count = n
        }
    }
})

// 导出给main.js使用
export default store